package tripmaker
package movimientos

object Medio {

  case class Bus(empresa: Empresa, override val id: String = "") extends Medio {
    override def toString = ("Bus " + id).trim + ", " + empresa
  }

  case class Tren(empresa: Empresa, override val id: String = "") extends Medio {
    override def toString = ("Tren " + id).trim + ", " + empresa
  }

  case class Vuelo(empresa: Empresa, override val id: String) extends Medio {
    override def toString = "Vuelo " + id + ", " + empresa
  }
  
  object APié extends Medio {
    def empresa = Empresa("")
    override def toString = splitCamelCase(id)
  }
  
  
  def apply(e: Empresa): Medio = new Medio {
    val empresa = e
  }
  
  implicit def EmpresaToMedio(empresa: Empresa): Medio = Medio(empresa)
}

trait Medio extends util.ObjectToString {
	def empresa: Empresa
	override def toString = empresa.toString
}